package com.atguigu.lease.common.minio;

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/*
    接收配置参数中的参数
    批量读取配置类文件中的参数，只要最后一层和我们的属性对应即可 支持-和驼峰式映射自动转换
    细节1：@ConfigurationProperties(prefix = "minio")出现红线
        原因：当前类的组件没有加入到ioc容器！！
            方案1：@Component 直接加入到ioc容器[不推荐(饿汉式，即使不用也会创建)]
            方案2：@EnableConfigurationProperties(配置类.class) 在使用的配置类开启注解加入到ioc容器
    细节2：为什么爆红以及没有提示的问题？
        步骤1：导入依赖，生成提示文件的插件
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <optional>true</optional>
            </dependency>
        步骤2：点击maven / compile 然后生成spring-configuration-metadata.json的配置文件
    细节3：属性并不是对齐的 有嵌套关系
        例如：spring:
              datasource:
                type: com.zaxxer.hikari.HikariDataSource
                url: jdbc:mysql:///lease?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2b8
                username: root
                password: chb123456
                hikari:
                  connection-test-query: SELECT 1 # 自动检测连接
                  connection-timeout: 60000 #数据库连接超时时间,默认30秒
                  idle-timeout: 500000 #空闲连接存活最大时间，默认600000（10分钟）
                  max-lifetime: 540000 #此属性控制池中连接的最长生命周期，值0表示无限生命周期，默认1800000即30分钟
                  maximum-pool-size: 12 #连接池最大连接数，默认是10
                  minimum-idle: 10 #最小空闲连接数量
                  pool-name: SPHHikariPool # 连接池名称
        解决：进行内部类创建
 */
@ConfigurationProperties(prefix = "minio")
@Data
public class MinioProperties {
//    @Value("${minio.endpoint}") 单独读取
    private String endpoint;
    private String accessKey;
    private String secretKey;
    private String bucketName;
}
